package com.lion.tag.accordion;

import java.io.IOException;

import javax.servlet.jsp.JspException;

import com.lion.tag.LionBaseTag;
import com.lion.tag.type.AttributeType;
import com.lion.tag.type.EasyuiOption;
import com.lion.tag.type.EasyuiType;

import static com.lion.tag.util.AppendUtil.addAttribute;
import static com.lion.tag.util.AppendUtil.appendOptionData;
/**
 * 手风琴
 * 
 *
 * Create on 2016年5月13日 下午3:18:53
 *
 * @author <a href="mailto:125487767@qq.com">liyongyao</a>. 
 *
 */
public class Accordion extends LionBaseTag {
	private static final long serialVersionUID = -8451463687657984475L;
	private Boolean fit = false;
	private Boolean border = true;

	/**
	 * 实现手风琴
	 */
	@Override
	public int doStartTag() throws JspException {
		StringBuilder sb = new StringBuilder(200);
		sb.append("<div ");
		sb = addAttribute(sb, AttributeType.ID.name(), id);
		sb = addAttribute(sb, AttributeType.CLASS.name(), EasyuiType.ACCORDION.name());
		sb = addAttribute(sb, AttributeType.STYLE.name(), style);
		int hasData = 0;
		hasData = appendOptionData(sb, hasData, EasyuiOption.FIT.name(), fit.toString(), false);
		hasData = appendOptionData(sb, hasData, EasyuiOption.BORDER.name(), border.toString(), false);
		sb.append(">");
		write(sb);
		return EVAL_BODY_INCLUDE;// 表示标签之间的内容被正常执行
	}

	@Override
	/**  
	 *  doEndTag：当JSP容器遇到自定义标签的结束标志，就会调用doEndTag()方法。doEndTag()方法也返回一个整数值，用来决定程序后续流程。  
	 *  A.Tag.SKIP_PAGE：表示立刻停止执行网页，网页上未处理的静态内容和JSP程序均被忽略任何已有的输出内容立刻返回到客户的浏览器上。  
	 *  B.Tag.EVAL_PAGE：表示按照正常的流程继续执行JSP网页  
	 */
	public int doEndTag() throws JspException {
		try {
			pageContext.getOut().write("</div>");
		} catch (IOException e) {
			throw new JspException(e);
		}
		return EVAL_PAGE;
	}

	/**
	 * @return the id
	 */
	@Override
	public String getId() {
		return id;
	}

	/**
	 * @param id
	 *            the id to set
	 */
	@Override
	public void setId(String id) {
		this.id = id;
	}

	/**
	 * @return the style
	 */
	@Override
	public String getStyle() {
		return style;
	}

	/**
	 * @param style
	 *            the style to set
	 */
	@Override
	public void setStyle(String style) {
		this.style = style;
	}

	public Boolean getFit() {
		return fit;
	}

	public void setFit(Boolean fit) {
		this.fit = fit;
	}

	public Boolean getBorder() {
		return border;
	}

	public void setBorder(Boolean border) {
		this.border = border;
	}

}
